var async=require('async');
var h=require('./helper');

//until与whilst正好相反，当test为false时循环，与true时跳出。其它特性一致。
//whilst(testFn,fn,cb)

var cnt=0;
async.doUntil(function(cb){
    h.log('cnt:',cnt);
    cnt++;
    h.delay(cnt,cb);
}, function(){
    return cnt>3;
},function (err,result) {
    if(err){
        h.log('err:',err);
    }else{
        h.log('result:',result);
    }
});


var cnt2=0;
async.doUntil(function(cb){
    h.log('cnt2:',cnt2);
    if(1==cnt2){
        h.error('until2',cb);
    }else{
        cnt2++;
        h.delay(cnt2,cb);
    }
},function(){
    return cnt2>3;
}, function (err,result) {
    if(err){
        h.log('err:',err);
    }else{
        h.log('result:',result);
    }
});